// pages/info/info.js
var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {

    //当前选择县名
    currentCity:'',


    //信息分类列表
    typeList:[],
    //当前分类的下标
    typeIndex:0,

    scrollTop:0,  //距顶部距离


    
    
    //信息列表
    infoList:[],
    infoList2:[],
    //信息列表临时窗口

    //信息展示条数
    infoViewLength:8,

    //各条信息当前使用类名的下标。比对选择下标与遍历下标，一致说明被点击使用c2类，默认使用c1类。
    currentCssIndex:'a',



  },


  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    var t = this
    //检测是否选择城市
    var city = app.getCityCode();   //连获取带判断，若获取不到会跳转到城市选择页
    var cityCode = city.code;
    t.setData({
      typeIndex:0,
      currentCity:city.region[2],
      typeList:app.globalData.infoTypeList,
      infoList2:[]
    })
    app.getCityListSetFromFile(function(resGetFileObj){
      //app.C(resGetFile);
      if(resGetFileObj != 'err'){
        var tmpCityInfoListIndex = -1;
        for(var i=0;i<resGetFileObj.length;i++){
          if(resGetFileObj[i].cityCode == cityCode){
            tmpCityInfoListIndex = i;   //记录当前城市数据所在的下标
          }
        }
        //本地缓存有当前城市数据
        if(tmpCityInfoListIndex >= 0){
          
          app.C('本地缓存有当前城市数据!');
          //筛选城市数据
          t.setData({
            infoList:resGetFileObj[tmpCityInfoListIndex].list
          })
          t.selectData();

          //判断超时
          if(resGetFileObj[tmpCityInfoListIndex].time + app.globalData.cityInfoTimeOut < new Date().getTime()){
            app.C('超时');
            //超时则比对版本
            var tagUrl = app.globalData.afterDomain+'/data/'+cityCode+'_tag'; 
            app.Ajax({},function(resTag){
              if(resTag.data == resGetFileObj[tmpCityInfoListIndex].tag){
                //版本一致则更新缓存时间
                app.C('版本一致，更新时间！');
                resGetFileObj[tmpCityInfoListIndex].time = new Date().getTime();
                //添加数据到本地文件缓存
                app.setCityListSetToFile(resGetFileObj);
              }else{
                if(typeof(resTag.data) == 'number'){  //版本为数值说明真的有数据更新
                  app.C('版本不一致，更新数据！');
                  //本地缓存中有当前城市信息，更新当前城市数据！
                  _getInfoListAfterForHave(resGetFileObj,2,function(){

                  })
                }else{
                  app.C('后台无版本号，无需更新！');  //版本为非数值说明请示的为空页，没有数据
                }
              }
            },tagUrl);
          }else{
            app.C('未超时');
          }
        }else{
          //本地缓存无当前城市数据，后台获取数据并添加到本地缓存
          _getInfoListAfterForHave(resGetFileObj,1,function(){

          })
        }
      }else{
        //信息列表不存在，获取数据并创建本地缓存
        t.getCityInfoListAfter(cityCode,function(resAfter){
          var tmpData = {
            list:[],
            tag:0,
            cityCode:cityCode,
            time:new Date().getTime()
          }
          if(resAfter != 'err'){
            if(typeof(resAfter)=='object' && resAfter.list){
              tmpData.list = resAfter.list;
              tmpData.tag = resAfter.tag;
            }
          }
          app.setCityListSetToFile([tmpData],function(){
            t.setData({
              infoList:tmpData.list,
            })
            t.selectData();
          });
        });
      }
    })

     

    /*
      ### 后台请求数据-已有本地缓存版
        resGetFileObj  本地缓存对象
        type 类型：
                1：本地缓存中没有当前城市信息
                2：本地缓存中有当前城市信息，需要更新数据
    */
    function _getInfoListAfterForHave(resGetFileObj,type,fun){
      var cityCode = app.getCityCode().code;
      app.C('infoList from file !');
      var tmpData = {
        list:[],
        tag:0,
        cityCode:cityCode,
        time:new Date().getTime()
      }
      t.getCityInfoListAfter(cityCode,function(resAfter){
        if(resAfter != 'err' && typeof(resAfter)=='object' && resAfter.list){
          tmpData.list = resAfter.list;
          tmpData.tag = resAfter.tag;
        }else{
          //如果后台无数据，则缓存空数据及时间，以防请示频繁
          tmpData.list = [];
        }
        if(type == 1 || type == '1'){
          app.C('本地缓存中没有当前城市信息，添加当前城市数据！');
          resGetFileObj.push(tmpData);
          t.setData({
            infoList:tmpData.list
          })
          t.selectData();
        }else{
          app.C('本地缓存中有当前城市信息，更新当前城市数据！');
          for(var i=0;i<resGetFileObj.length;i++){
            if(resGetFileObj[i].cityCode == cityCode){
              resGetFileObj[i] = tmpData;
              t.setData({
                infoList:tmpData.list
              })
              t.selectData();
            }
          }
        }
        app.setCityListSetToFile(resGetFileObj);
        if(fun) fun();
      })
    }
  },

  //获取指定城市的信息列表
  getCityInfoListAfter(cityCode,fun,v){
    var url = app.globalData.afterDomain+'/data/'+cityCode; //当前城市的信息列表数据地址
    if(v) app.C('infoList from after');
    app.Ajax({},function(resAfter){
      if(resAfter && resAfter.data && typeof(resAfter.data)=='object'){
        if(fun) fun(resAfter.data)
      }else{
        if(fun) fun('err')
      }
    },url);
  },










  //切换城市
  changeCity(){
    wx.navigateTo({
      url: '/pages/index_city/index_city',
    })
  },


  //返回顶部
  backTop(){
    wx.pageScrollTo({
      scrollTop: 0
    })
  },

  //顶部广告跳转
  jumpGg(){
    var t = this;
    app.jumpGg();
  },

  



  //切换样式
  changeCss(e){
    var t = this;
    var index = e.currentTarget.dataset.index;
    if(index == t.data.currentCssIndex){
      t.setData({ 
        currentCssIndex: 'a'
      }) 
    }else{
      t.setData({ 
        currentCssIndex: index
      }) 
    }
  },


  //分类切换
  typeChange(e){
    var t = this;
    t.setData({
      typeIndex:e.detail.value
    })
    //筛选数据
    t.selectData();
  },

  
   
  //页面上拉触底
  onReachBottom: function () {

    var t = this;
    var infoViewLength = t.data.infoViewLength;
    var infoLength = t.data.infoList.length;
    if(infoViewLength < infoLength){
      infoViewLength = infoViewLength + 5 > infoLength?infoLength:infoViewLength + 5;
      t.setData({
        infoViewLength:infoViewLength
      })
    }else{
      wx.showToast({
        title: '到底了！',
        icon:'none',
        duration: 1000
      })
    }
    
  },




  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },




  //筛选数据
  selectData(){
    var t = this
    if(t.data.infoList.length > 0){
      var data = t.data.infoList;
      var tmpList = [];
      //显示全部
      if(t.data.typeIndex == 0){
        for(var i=0;i<data.length;i++){
          if(data[i][6] == 2){        //1：待审、2：正常、3：未通过
            tmpList.push(data[i]);
          }
        }
      }else{
        //按类型显示
        for(var i=0;i<data.length;i++){
          if(data[i][6] == 2 && data[i][5] == t.data.typeIndex){  //1：待审、2：正常、3：未通过
            tmpList.push(data[i]);
          }
        }
      }
      //app.C(tmpList);return;
      t.setData({
        infoList2:tmpList
      })
    }else{
      t.setData({
        infoList2:[]
      })
    }
  },


  onPageScroll(e){
    var t = this;
    t.setData({
      scrollTop:e.scrollTop
    })
  },
  
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    var t = this;
    var viewCount = t.data.infoViewLength;
    if(viewCount+5 < t.data.infoList.length){
      var tmp = viewCount+5;
    }else{
      var tmp = t.data.infoList.length;
    }
    t.setData({
      infoViewLength:tmp
    });
  },


})